// 该文件是对axios的二次封装
// 目的是为了让整个项目发送ajax请求时，通用的配置不用一遍遍的重复编写

// 1. 引入axios模块
import axios from 'axios'
import NProress from 'nprogress'
import 'nprogress/nprogress.css'
import {getUserTempId} from '@/utils/getUserTempId'
import store from '@/store';
// 2. 创建axios实例对象 以后整个项目都用这个实例发送请求
const ajax = axios.create({
    // target: 'http://sph-h5-api.atguigu.cn',
  baseURL:'/api',
  timeout:5000
})

// 3. 设置请求拦截器
ajax.interceptors.request.use(config => {
  NProress.start() // 启用进度条

  // 统一添加请求头，生成临时身份id
  config.headers.userTempId = getUserTempId();

  // 后去token加到请求头上
  const token = store.state.user.userInfo.token;
  console.log('tokennnn',token);
  if(token){
    config.headers.token = token
  }
  return config
})

// 4. 设置响应拦截器
ajax.interceptors.response.use(
  response =>{
    NProress.done() // 结束进度条
    return response.data
  } ,
  // 如果发送请求出错，这里会统一提醒，请求失败要返回失败的promise，
  // 如果是非promise类型会被认为是成功的promise，因为状态没有改变
  error =>{
    NProress.done() // 结束进度条
    return Promise.reject(new Error(error.message))
  } 
)
// 5. 导出对象
export default ajax